package cn.supermaster.management.web.service.system;

import cn.supermaster.management.common.domain.SystemUser;
import cn.supermaster.management.common.page.TableDataInfo;
import cn.supermaster.management.common.response.WebResponse;
import org.springframework.ui.ModelMap;
import org.springframework.web.multipart.MultipartFile;

/**
 * All rights Reserved, Designed By www.super-bytecode.com
 *
 * @ProjectName: supermaster-management
 * @Package: cn.supermaster.management.web.service.system
 * @ClassName: ISUserService
 * @Description: []
 * <p> </p>
 * @Author: [Lance Ting]
 * @Date: 2021/1/11 2:44
 * @Version: V1.0
 * @Copyright: 2021 www.super-bytecode.comn Inc. All rights reserved.
 * TODO: 注意,本文件Lance Ting所作,如果转载或使用请标明具体出处!
 **/
public interface ISUserService {
    /*
     * ================================================
     *  页面跳转功能实现
     * ================================================
     */

    /**
     * @Description: [跳转到用户Index页面]
     * <p></P>
     * @Title: skipUserIndexHtml
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Return: java.lang.String
     */
    String skipUserIndexHtml();

    /**
     * @Description: [跳转到用户新增页面]
     * <p></P>
     * @Title: skipAddUserHtml
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: modelMap
     * @Return: java.lang.String
     */
    String skipAddUserHtml(ModelMap modelMap);

    /**
     * @Description: [跳转修改用户界面]
     * <p></P>
     * @Title: skiModifyUserHtml
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: modelMap
     * @Param: userId
     * @Return: java.lang.String
     */
    String skiModifyUserHtml(ModelMap modelMap, Long userId);

    /**
     * @Description: [跳转修改用户密码界面]
     * <p></P>
     * @Title: skiResetPasswordHtml
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: modelMap
     * @Param: userId
     * @Return: java.lang.String
     */
    String skiResetPasswordHtml(ModelMap modelMap, Long userId);

    /**
     * @Description: [进入授权角色页]
     * <p></P>
     * @Title: skipAuthRoleHtml
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: modelMap
     * @Param: userId
     * @Return: java.lang.String
     */
    String skipAuthRoleHtml(ModelMap modelMap, Long userId);


    /*
     * ================================================
     *  Rest功能实现
     * ================================================
     */

    /**
     * @Description: [根据条件获取用户信息列表]
     * <p></P>
     * @Title: queryUserListByCondition
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: user
     * @Return: cn.supermaster.management.common.page.TableDataInfo
     */
    TableDataInfo queryUserListByCondition(SystemUser user);

    /**
     * @Description: [导出用户信息列表]
     * <p></P>
     * @Title: doExportUserInformation
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: user
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doExportUserInformation(SystemUser user);

    /**
     * @Description: [导入用户信息数据]
     * <p></P>
     * @Title: doImportUserInformation
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: file
     * @Param: updateSupport
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doImportUserInformation(MultipartFile file, boolean updateSupport);

    /**
     * @Description: [导入用户模板数据]
     * <p></P>
     * @Title: doImportUserTemplate
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doImportUserTemplate();

    /**
     * @Description: [新增保存用户]
     * <p></P>
     * @Title: doAddUserInformation
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: user
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doAddUserInformation(SystemUser user);

    /**
     * @Description: [修改保存用户]
     * <p></P>
     * @Title: doModifyUserInformation
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: user
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doModifyUserInformation(SystemUser user);

    /**
     * @Description: [重置密码]
     * <p></P>
     * @Title: doResetPassword
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: user
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doResetPassword(SystemUser user);

    /**
     * @Description: [用户授权角色]
     * <p></P>
     * @Title: doInsertAuthRole
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: userId
     * @Param: roleIds
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doInsertAuthRole(Long userId, Long[] roleIds);

    /**
     * @Description: [删除用户信息]
     * <p></P>
     * @Title: doRemoveUserInformation
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: ids
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doRemoveUserInformation(String ids);

    /**
     * @Description: [校验用户名]
     * <p></P>
     * @Title: doCheckuserNameUnique
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: user
     * @Return: java.lang.String
     * @Throws:
     */
    String doCheckuserNameUnique(SystemUser user);

    /**
     * @Description: [校验手机号码]
     * <p></P>
     * @Title: doCheckMobileUnique
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: user
     * @Return: java.lang.String
     */
    String doCheckMobileUnique(SystemUser user);

    /**
     * @Description: [校验email邮箱]
     * <p></P>
     * @Title: doCheckEmailUnique
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: user
     * @Return: java.lang.String
     */
    String doCheckEmailUnique(SystemUser user);

    /**
     * @Description: [用户状态修改]
     * <p></P>
     * @Title: doChangeUserStatus
     * @Author: Lance Ting
     * @Date: 2021-01-11
     * @Param: user
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doChangeUserStatus(SystemUser user);
}